<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>选班长</title>
</head>
<body>
    <script>
        //编写一个选班长的函数，实现如下功能：
        /*传入班级的人敢，输出当选位班长的同学的下际
        选择班长的方式，全班所有同学围成一个圈，然后从第一个同学开始报数,
        第一个同学报数为1,第二个同学报数为2，第三个同学报数为3，
        第四个同学报数为1，依次类推。报数为3的同学失去当选班长的资格，不再参与报数。
        报数一直持续到圈子中只剩下一个同学为止,，这个同学就是当选为班长的同学。*/
        function select(count){
            // 1.创建数组，循环向数组中加入编号
            // var a=arguments.length;
            var cla=[];
            for(var i=0;i<count;i++){
                cla.push(i+1);
            }
            // 2.循环报数，剩下人数>1
            i=0;//第一个同学开始报数
            num=0;//报的数据
            var cnt=count;
            while(count>1){
                //如果数据元素没有失去资格，则继续报数
                if(cla[i]!=0){
                    num++;
                }
                //如果是3，则失去资格
                if(num==3){
                    cla[i]=0;
                    count--;//有资格的人数减1
                    num=0;//报数归0
                }
                i++;//下标加1，准备下一同学报数
                if(i>=cnt){
                    i=0;//下标超出边界，强制回到第一个
                }
            }
            for (var i=0;i<cnt;i++){
                if(cla[i]!=0){
                    return i+1;//返回当选同学编号
                }
            }
        }
        console.log(select(7));



        //编写一个函数，在网页上打印杨辉三角
        //  1
        //  1  1
        //  1  2  1
        //  1  3  3  1
        //  1  4  6  4  1
        //形参 row 行数，无返回值
        function Pascal(row){
            //构造保存杨辉三角形元素的二维数组
            //循环输出数字
            var arr=[];
            for(var i=0;i<row;i++){
                var ns=[];//行对应的一维数组
                //列循环
                for(var j=0;j<=i;j++){
                    if(j==0 || j==i){//第一列或最后一列
                        ns.push(1);
                    }else{
                        ns.push(arr[i-1][j]+arr[i-1][j-1]);
                    }
                }
                //列循环结束，本行一维数组结束，将一维数组加入二维数组
                arr.push(ns);
                // console.log(arr);
            }
            //打印输出
            for(var i=0;i<row;i++){
                for(var j=0;j<=i;j++){
                    document.write(arr[i][j]+'\t');
                }
                document.write('<br />');
            }
           
        } 
        Pascal(5);
        
    </script>
</body>
</html>